package view;

import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import model.ComboViajesHandler;
import model.PuntoParada;
import model.Simulador;
import model.Viaje;
import controller.CheckBoxTraficoActionListener;
import controller.ComboViajesActionListener;
import controller.DetenerSimuladorActionListener;
import controller.SimuladorActionListener;

import java.awt.Color;

import javax.swing.border.SoftBevelBorder;
import javax.swing.border.BevelBorder;

public class SetulatorVista extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4893205329386944352L;
	private JPanel contentPane;
	public JButton btnIniciarSimulacion;
	public JButton btnDetenerSimulacion;
	public Viaje viajeASimular;
	public Simulador simulador;
	public JComboBox<Viaje> viajesBox;
	public boolean traficoPesado;
	public JLabel mensaje;
	public JList<PuntoParada> listaParadas;
	public ListSelectionModel listSelectionParadas;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					SetulatorVista frame = new SetulatorVista();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public SetulatorVista() {
		setIconImage(Toolkit.getDefaultToolkit().getImage(SetulatorVista.class.getResource("/recursos/hal_9000.png")));
		try {
	        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	    } catch (ClassNotFoundException e) {
	        e.printStackTrace();
	    } catch (InstantiationException e) {
	        e.printStackTrace();
	    } catch (IllegalAccessException e) {
	        e.printStackTrace();
	    } catch (UnsupportedLookAndFeelException e) {
	        e.printStackTrace();
	    }
		setTitle("SetuLator");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 637, 369);
		contentPane = new JPanel();
		setContentPane(contentPane);
		contentPane.setLayout(null);
		this.viajesBox = new JComboBox<Viaje>();
		this.viajesBox.setBounds(10, 43, 393, 25);
		this.viajesBox.setModel(ComboViajesHandler.crearComboViajes());
		this.viajesBox.addActionListener(new ComboViajesActionListener(this));
		contentPane.add(this.viajesBox);
		
		JLabel lblSeleccionarViaje = new JLabel("Seleccionar Viaje");
		lblSeleccionarViaje.setBounds(10, 18, 109, 14);
		contentPane.add(lblSeleccionarViaje);
		
		JCheckBox chckbxTraficoPesado = new JCheckBox("Tr\u00E1fico Pesado");
		chckbxTraficoPesado.setBounds(10, 90, 158, 23);
		chckbxTraficoPesado.addActionListener(new CheckBoxTraficoActionListener(this));
		contentPane.add(chckbxTraficoPesado);
		
		this.btnIniciarSimulacion = new JButton("Iniciar simulaci\u00F3n");
		this.btnIniciarSimulacion.setBounds(10, 272, 119, 23);
		this.btnIniciarSimulacion.setEnabled(false);
		this.btnIniciarSimulacion.addActionListener(new SimuladorActionListener(this));
		contentPane.add(this.btnIniciarSimulacion);
		
		this.btnDetenerSimulacion = new JButton("Detener Simulaci\u00F3n y Borrar Viaje");
		this.btnDetenerSimulacion.setBounds(139, 272, 199, 23);
		this.btnDetenerSimulacion.setEnabled(false);
		this.btnDetenerSimulacion.addActionListener(new DetenerSimuladorActionListener(this));
		contentPane.add(this.btnDetenerSimulacion);
		
		mensaje = new JLabel("");
		mensaje.setForeground(Color.BLUE);
		mensaje.setBounds(10, 306, 328, 14);
		contentPane.add(mensaje);
		
		listaParadas = new JList();
		listaParadas.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
		listaParadas.setToolTipText("El veh\u00EDculo no se detendra en los puntos seleccionados");
		listaParadas.setBounds(413, 47, 186, 245);
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(413, 47, 186, 245);
		scrollPane.setViewportView(listaParadas);
		contentPane.add(scrollPane);
		listaParadas.setEnabled(false);
		
		JLabel lblNewLabel = new JLabel("<html>Para seleccionar mas de un punto mantener presionado Ctrl.</html>");
		lblNewLabel.setBounds(413, 294, 171, 26);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("<html>Seleccionar los punto donde no desee detener el veh\u00EDculo</html>");
		lblNewLabel_1.setBounds(413, 11, 188, 25);
		contentPane.add(lblNewLabel_1);
		
		
		
	}
}
